package com.office.sysManage.roleManage.dao;


import com.office.sysManage.roleManage.pojo.Role;
import com.office.sysManage.roleManage.pojo.RoleAndLimits;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author 88168
 * @since 2022-10-24
 */
@Mapper
public interface RoleMapper  {

    /**
     * 根据查询条件查询角色信息
     * @param role 角色和权限对象
     * @return 角色集合
     */
    public List<RoleAndLimits> queryRolesByCondition(RoleAndLimits role);

    /**
     * 添加角色
     * @param role 角色和权限对象
     * @return 受影响行数
     */
    public int addRole(RoleAndLimits role);

    /**
     * 添加角色权限
     * @param role 角色和权限对象
     * @return 受影响行数
     */
    public int addRoleLimit(RoleAndLimits role);

    /**
     * 修改角色信息
     * @param role 角色和权限对象
     * @return 是否成功
     */
    public boolean updateRole(RoleAndLimits role);

    /**
     * 修改角色权限——取消原本所有权限
     * @param role 角色和权限对象
     * @return 受影响行数
     */
    public int updateLimitOne(RoleAndLimits role);

    /**
     * 修改角色权限——添加修改之后的权限
     * @param role 角色和权限对象
     * @return 受影响行数
     */
    public int updateLimitTwo(RoleAndLimits role);

    /**
     * 删除角色
     * @param role 角色对象
     * @return 受影响行数
     */
    public int deleteRole(Role role);

    /**
     * 删除权限
     * @param role 角色对象
     * @return 受影响行数
     */
    public int deleteLimit(Role role);

    /**
     * 通过角色ID查询权限
     * @param roleId 角色ID
     * @return 角色权限
     */
    public List<RoleAndLimits> queryRoleLimitByRoleId(int roleId);

    /**
     * 通过角色名查询ID
     * @param roleName 角色名称
     * @return 角色ID
     */
    public Integer queryRoleIdByName(String roleName);

    /**
     * 通过模块名查询ID
     * @param moduleName 模块名称
     * @return 模块ID
     */
    public int queryModuleIdByName(String moduleName);

}
